Skip to content

Broadcast feature #37#188

Draft
sbaillou wants to merge 1 commit intoSystemRDL:mainfrom
sbaillou:dev/broadcast_write
Draft

Broadcast feature #37#188
sbaillou wants to merge 1 commit intoSystemRDL:mainfrom
sbaillou:dev/broadcast_write

Conversation

@sbaillou
Copy link
Contributor

@sbaillou sbaillou commented Nov 19, 2025

Description of change

I've given a shot at the broadcast feature (#37). It's far from a perfect, but I'm hoping it gets the ball rolling, and I might use it in our next project.

What I like in this version:

  • It seems to work. 🤓
  • The changes don't spill over too many parts of the code, and are mostly in the BroadcastLogic class, with a few changes in the addr_decode logic.

What I don't like:

  • Currently not checking properly that the broadcaster and target have the same type.
  • Building the broadcast_map was rather painful, I'm sure there is a better way?
  • Broadcast to arrays requires listing each element individually (limitation in the systemrdl-compiler apparently).
  • When broadcasting to an array, all elements must be listed in the broadcast target (no partial selection).
  • Doesn't support broadcast to memories.
  • Not tested thoroughly the impact of nested regfile broadcasts, or more complex address map structures.

Checklist

  • I have reviewed this project's contribution guidelines
  • This change has been tested and does not break any of the existing unit tests. (if unable to run the tests, let us know)
  • If this change adds new features, I have added new unit tests that cover them.

@amykyta3 amykyta3 marked this pull request as draft November 20, 2025 17:59
feat: broadcast_write to arrays

feat: broadcast_write to regfiles

refactor: simplified broadcast scanner

refactor: simplified broadcasters for target

refactor: simplified broadcasters for target using inst instead of path

refactor: improved broadcasters for target for arrays

test: add test_broadcast_regfiles

fix: remove field_storage for broadcaster

refactor: simplify broadcast address decoding logic

fix: remove decoding strobe for broadcasters

fix: interaction between CPU error response and broadcast

refactor: minor clean-up or broadcast UDP validation

refactor: rename broadcast_write UDP to broadcast, since it supports read

refactor: move a section of the template back to where it belongs

lint: pylint fixes

lint: mypy fixes

refactor: remove unnecessary expand_target function
@sbaillou sbaillou force-pushed the dev/broadcast_write branch from a71617e to 3ee1a4e Compare November 24, 2025 15:00
@sbaillou
Copy link
Contributor Author

Just squashed everything into one commit to make it easier to revert in the future on my local fork.

@sbaillou
Copy link
Contributor Author

Note: 9fc95b8 (#155) breaks the broadcast read feature.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant